package com.molichuxing.services.infrastructure.dto.response;

import com.molichuxing.framework.dto.ResponseRootDto;
import com.molichuxing.services.property.CarViolationEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * @Author: renzhengyu
 * @Description:
 * @Date: Created in 16:01 2019/9/5
 * @Modified By:
 **/
@Data
public class CarsViolationDto extends ResponseRootDto {
    private static final long serialVersionUID = -1447221842981280148L;

    /**
     * 主键id
     * @mbggenerated Thu Sep 05 15:18:30 CST 2019
     */
    @ApiModelProperty(value = "主键id")
    private Integer id;

    /**
     * 车辆ID
     * @mbggenerated Thu Sep 05 15:18:30 CST 2019
     */
    @ApiModelProperty(value = "车辆ID")
    private Integer carId;

    /**
     * 订单号
     * @mbggenerated Thu Sep 05 15:18:30 CST 2019
     */
    @ApiModelProperty(value = "订单号")
    private Long orderCode;

    /**
     * 经销商id
     * @mbggenerated Thu Sep 05 15:18:30 CST 2019
     */
    @ApiModelProperty(value = "经销商id")
    private Integer dealerId;

    /**
     * 用户id
     * @mbggenerated Thu Sep 05 15:18:30 CST 2019
     */
    @ApiModelProperty(value = "用户id")
    private Integer userId;

    /**
     * 车牌号
     * @mbggenerated Thu Sep 05 15:18:30 CST 2019
     */
    @ApiModelProperty(value = "车牌号")
    private String licencePlate;

    /**
     * 车架号
     * @mbggenerated Thu Sep 05 15:18:30 CST 2019
     */
    @ApiModelProperty(value = "车架号")
    private String vin;

    /**
     * 发动机号
     * @mbggenerated Thu Sep 05 15:18:30 CST 2019
     */
    @ApiModelProperty(value = "发动机号")
    private String engineCode;

    /**
     * 违法代码
     * @mbggenerated Thu Sep 05 15:18:30 CST 2019
     */
    @ApiModelProperty(value = "违法代码")
    private String regulationCode;

    /**
     * 违章行为
     * @mbggenerated Thu Sep 05 15:18:30 CST 2019
     */
    @ApiModelProperty(value = "违章行为")
    private String regulationBehavior;

    /**
     * 城市
     * @mbggenerated Thu Sep 05 15:18:30 CST 2019
     */
    @ApiModelProperty(value = "城市")
    private String cityName;

    /**
     * 违章地址
     * @mbggenerated Thu Sep 05 15:18:30 CST 2019
     */
    @ApiModelProperty(value = "违章地址")
    private String address;

    /**
     * 罚款金额
     * @mbggenerated Thu Sep 05 15:18:30 CST 2019
     */
    @ApiModelProperty(value = "罚款金额")
    private BigDecimal fineFee;

    /**
     * 违章记分数
     * @mbggenerated Thu Sep 05 15:18:30 CST 2019
     */
    @ApiModelProperty(value = "违章记分数")
    private Integer regulationScore;

    /**
     * 违章时间
     * @mbggenerated Thu Sep 05 15:18:30 CST 2019
     */
    @ApiModelProperty(value = "违章时间")
    private LocalDateTime regulationTime;

    /**
     * 处理时间
     * @mbggenerated Thu Sep 05 15:18:30 CST 2019
     */
    @ApiModelProperty(value = "处理时间")
    private LocalDateTime handlingTime;

    /**
     * 缴费时间
     * @mbggenerated Thu Sep 05 15:18:30 CST 2019
     */
    @ApiModelProperty(value = "缴费时间")
    private LocalDateTime paymentTime;

    /**
     * 违章处理状态(1:未处理未交费, 2:已处理未交费, 3:已处理已交费)
     * @mbggenerated Thu Sep 05 15:18:30 CST 2019
     */
    @ApiModelProperty(value = "违章处理状态(1:未处理未交费, 2:已处理未交费, 3:已处理已交费)")
    private Byte status;
    
    /**
     * 操作类型 (1:系统操作, 2:标记已缴费, 3:取消标记)
     * @mbggenerated Thu Sep 05 15:18:30 CST 2019
     */
    @ApiModelProperty(value = "操作类型 (1:系统操作, 2:标记已缴费, 3:取消标记)")
    private Byte opType;


    /**
     * 违章处理状态(1:未处理未交费, 2:已处理未交费, 3:已处理已交费)
     * @mbggenerated Thu Sep 05 15:18:30 CST 2019
     */
    @ApiModelProperty(value = "违章处理状态(1:未处理未交费, 2:已处理未交费, 3:已处理已交费)")
    private String statusStr;

    /**
     * 创建时间
     * @mbggenerated Thu Sep 05 15:18:30 CST 2019
     */
    @ApiModelProperty(value = "创建时间")
    private LocalDateTime gmtCreate;

    /**
     * 更新时间
     * @mbggenerated Thu Sep 05 15:18:30 CST 2019
     */
    @ApiModelProperty(value = "更新时间")
    private LocalDateTime gmtModified;

    public void setStatus(Byte status) {
        this.status = status;
        this.statusStr = CarViolationEnum.getName((int)status);
    }
}
